''' <summary>
''' El plugin es modulo cargado dinamicamente que permite la interaccion con la aplicacion.
''' Es vital para agregarle funcionalidad a la aplicacion.
''' </summary>
Public Interface Plugin
    ''' <summary>
    ''' Informacion acerca del plugin, el autor y otros datos de interes para el usuario.
    ''' </summary>
    ''' <returns>PluginInfo</returns>
    Function getPluginInfo() As PluginInfo
    ''' <summary>
    ''' Carga el plugin. Esto inicializara el plugin.
    ''' </summary>
    ''' <param name="Resources">Objeto Resources de la Aplicacion</param>
    Sub load(ByRef Resources As Resources)
    ''' <summary>
    ''' Procesa el evento
    ''' </summary>
    ''' <param name="notifiableEvent">Evento a procesar</param>
    ''' <param name="args">Package a procesar</param>
    Sub Process(ByRef notifiableEvent As NotifiableEvent, ByVal args As Package)
    ''' <summary>
    ''' Descarga el plugin. 
    ''' </summary>
    Sub unload()

End Interface
